<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义指令</title>
    <script src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <h1>n的值:{{n}}</h1>
    <!--    当有多个单词明明指令时 要用这样的形式 比如big-number 中间加-  然后vm对象中 或者全局配置中 用这样 引用名字 'big-number' 加引号 -->
    <h2>n的10倍:<span v-big="n"></span></h2>
    <button @click="n++">点我n+1</button>
    <hr/>
    <input type="text" v-fbind:value="n">
</div>
<script>
    Vue.config.productionTip = false;
    //全局配置 自定义指令 Vue.directive('指令名', 对象或者回调函数)
    Vue.directive('fbind', {
        //分三个时期
        //元素和指定绑定时期
        bind(element, binding) {
            element.value = binding.value;
        },
        //元素被插入页面时期 (先绑定 后解析 在插入)
        //可以写一些获取焦点 或者 获取父元素等一些动作
        inserted(element, binding) {
            element.focus();
        },
        //模板更新式时进行的动作
        update(element, binding) {
            element.value = binding.value;
        }

    });


    const vm = new Vue({
        el: '#root',
        data: {
            n: 1
        },
        //定义自定义自定义指令
        directives: {
            //自定义属性时属性名 不用带v- 函数式里面的参数(元素（dom形式）,元素的信息)
            //big执行的时机: 1.元素与指令绑定的时候(一上来) 2.解析模板的时候 (相当于对象写法中的bind 和 update) 3.所以这样的写法无法做一些获取焦点 或者 获取父元素等 这样的动作
            big(element, binding) {
                element.innerText = binding.value * 10;
            },

        }
    });
</script>
</body>
</html>